package lk.icta.core.service;

import lk.icta.core.entity.GOInterestInformation;
import lk.icta.user.entity.User;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Tharanga
 * Date: Jan 25, 2012
 * Time: 2:07:30 PM
 * To change this template use File | Settings | File Templates.
 */
public interface GOInterestManagementService {

    /**
     * Adding GO Information
     *
     * @param user                  The user requesting add GO Information
     * @param goInterestInformation The GO Information  User to be added
     */
    public void addGOInterestInformation(GOInterestInformation goInterestInformation, User user);

    /**
     * update GO Information
     *
     * @param user                  The user requesting update GO Information
     * @param goInterestInformation The GO Information  User to be update
     */
    public void updateGOInterestInformation(GOInterestInformation goInterestInformation, User user);


    /**
     * get GO information by id
     *
     * @param user The user requesting update GO Information
     */
    public GOInterestInformation getGOInterestInformationById(long goInterestInformationId, User user);

    /**
     * get GO information  list to be edit
     *
     * @param user The user requesting update GO Information  list
     */
    public List<GOInterestInformation> getGOInterestInformationListToBeEdit(User user);


    /**
     * get GO Interest Information  list to be approved
     *
     * @param user The user requesting approve GO Interest Information  list
     */
    public List<GOInterestInformation> getGOInterestInformationListToBeApproved(User user);

    /**
     * approve GO Information
     *
     * @param user                  The user requesting approve GO Information
     * @param goInterestInformation The GO Information  to be approved
     */
    public void approveGOInterestInformation(GOInterestInformation goInterestInformation, User user);

    /**
     * reject GO Information
     *
     * @param user                  The user requesting reject GO Information
     * @param goInterestInformation The GO Information  to be rejected
     */
    public void rejectGOInterestInformation(GOInterestInformation goInterestInformation, User user);

    /**
     * get GO information  list to Active/InActive
     *
     * @param user The user requesting to Active/InActive GO information
     */
    public List<GOInterestInformation> getGOInterestInformationList(User user);

    /**
     * active a  GOInterest Information
     *
     * @param goInterestInformation GOInterest Information to be activated
     * @param user                  The user requesting to active  GOInterest Information
     */
    public void activeGOInterestInformation(GOInterestInformation goInterestInformation, User user);

    /**
     * inactive a  GOInterest Information
     *
     * @param goInterestInformation GOInterest Information to be inactivated
     * @param user                  The user requesting to inactive  GOInterest Information
     */
    public void inactiveGOInterestInformation(GOInterestInformation goInterestInformation, User user);

    /**
     * get GO information  list by state
     *
     * @param user The user requesting to  GO information By OrganizationId
     */
    public List<GOInterestInformation> getGOInterestInformationListByOrganizationId(User user);
}
